home *** CD-ROM | disk | FTP | other *** search
- unit DockedControls11U;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ActnList, Menus, ImgList, ComCtrls, ExtCtrls, ToolWin, StdCtrls;
-
- type
- TForm1 = class(TForm)
- ImageList1: TImageList;
- Label1: TLabel;
- MainMenu1: TMainMenu;
- ActionList1: TActionList;
- actToggleToolbar: TAction;
- Environment1: TMenuItem;
- Toolbarvisible1: TMenuItem;
- btnToggleFloat: TButton;
- ControlBar1: TControlBar;
- PageControl1: TPageControl;
- TabSheet1: TTabSheet;
- Label2: TLabel;
- Image1: TImage;
- ToolBar1: TToolBar;
- ToolButton6: TToolButton;
- ToolButton7: TToolButton;
- ToolButton8: TToolButton;
- ToolButton9: TToolButton;
- ToolButton10: TToolButton;
- procedure FormCreate(Sender: TObject);
- procedure actToggleToolbarExecute(Sender: TObject);
- procedure actToggleToolbarUpdate(Sender: TObject);
- procedure btnToggleFloatClick(Sender: TObject);
- procedure PageControl1DockDrop(Sender: TObject;
- Source: TDragDockObject; X, Y: Integer);
- procedure PageControl1GetSiteInfo(Sender: TObject;
- DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
- var CanDock: Boolean);
- procedure ControlBar1GetSiteInfo(Sender: TObject; DockClient: TControl;
- var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
- procedure ControlBar1DockDrop(Sender: TObject;
- Source: TDragDockObject; X, Y: Integer);
- procedure ControlBar1UnDock(Sender: TObject; Client: TControl;
- NewTarget: TWinControl; var Allow: Boolean);
- procedure ToolBar1StartDock(Sender: TObject;
- var DragObject: TDragDockObject);
- procedure ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
- private
- CustomDockObject: TDragDockObject;
- end;
-
- TToolBarDockForm = class(TToolDockForm)
- protected
- procedure WMClose(var Message: TWMClose);
- message WM_CLOSE;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- { TDockToolBarDockForm }
-
- procedure TToolBarDockForm.WMClose(var Message: TWMClose);
- begin
- //When form is closed, dock control back in old dock site
- if (DockClientCount = 1) and (DockClients[0] is TToolBar) then
- TToolBar(DockClients[0]).ManualDock(Form1.ControlBar1);
- inherited
- end;
-
- { TForm1 }
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Mouse.DragImmediate := False;
- Image1.ManualDock(PageControl1);
- ToolBar1.ManualDock(ControlBar1);
- ToolBar1.FloatingDockSiteClass := TToolBarDockForm;
- end;
-
- procedure TForm1.actToggleToolbarExecute(Sender: TObject);
- begin
- ToolBar1.Visible := not (Sender as TAction).Checked
- end;
-
- procedure TForm1.actToggleToolbarUpdate(Sender: TObject);
- begin
- (Sender as TAction).Checked := ToolBar1.Visible
- end;
-
- procedure TForm1.btnToggleFloatClick(Sender: TObject);
- begin
- if ToolBar1.Floating then
- ToolBar1.ManualDock(ControlBar1)
- else
- //ToolBar1.ManualDock(nil)
- ToolBar1.ManualFloat(
- Rect(Left, Top, Left + ToolBar1.UndockWidth, Top + ToolBar1.UndockHeight))
- end;
-
- procedure TForm1.PageControl1DockDrop(Sender: TObject;
- Source: TDragDockObject; X, Y: Integer);
- begin
- if Source.Control = Image1 then
- PageControl1.ActivePage.Caption := 'Athena'
- end;
-
- procedure TForm1.PageControl1GetSiteInfo(Sender: TObject;
- DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
- var CanDock: Boolean);
- begin
- CanDock := not (DockClient is TToolBar)
- end;
-
- procedure TForm1.ControlBar1GetSiteInfo(Sender: TObject; DockClient: TControl;
- var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
- begin
- //Only accept toolbars
- CanDock := DockClient is TToolBar
- end;
-
- procedure TForm1.ControlBar1DockDrop(Sender: TObject;
- Source: TDragDockObject; X, Y: Integer);
- begin
- with (Sender as TControlBar) do
- BevelEdges := [beLeft, beRight, beTop, beBottom]
- end;
-
- procedure TForm1.ControlBar1UnDock(Sender: TObject; Client: TControl;
- NewTarget: TWinControl; var Allow: Boolean);
- begin
- with (Sender as TControlBar) do
- //When last control is being undocked,
- //remove bevelled edges
- if ControlCount = 1 then
- BevelEdges := []
- end;
-
- procedure TForm1.ToolBar1StartDock(Sender: TObject;
- var DragObject: TDragDockObject);
- begin
- DragObject := TToolDockObject.Create(ToolBar1);
- CustomDockObject := DragObject
- end;
-
- procedure TForm1.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
- begin
- CustomDockObject.Free;
- CustomDockObject := nil
- end;
-
- end.
-